package com.cskaoyan.javase.thread._1extends;

import java.util.concurrent.TimeUnit;

/**
 * 在Java的设计体系中，用java.lang.Thread类来描述一个Java程序中的线程，同时基于Thread类来实现Java多线程是一个最基本的、最简单的方式
 * 这是我们学习多线程使用的第一个重要目标。
 *
 * 在Java代码中,启动一个新的线程的步骤(方式一)
 *      1.新建一个类A，让该类继承java.lang.Thread类。
 *      2.重写该类A继承自父类的run方法。
 *      3.创建该类A的对象（注：直接使用Thread类的无参构造），调用start方法启动这个线程。
 *      最终得到的效果是：启动一个新的线程，并自动调用子类A重写的run方法，直到run方法执行完毕。
 * @since 15:18
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        ThreadA threadA = new ThreadA();
        // 启动子线程
        threadA.start();
        // 不能重复启动线程,会抛出异常IllegalThreadStateException
        // threadA.start();
        // main方法执行路径,是主线程
        for (int i = 0; i < 10; i++) {
            System.out.println("666666!");
            try {
                TimeUnit.SECONDS.sleep(4);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}

class ThreadA extends Thread {
    // 子线程
    @Override
    public void run() {
        while (true) {
            System.out.println("hello world!");
            try {
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
